       -=( 7A69#12 )=--=( art3 )=--=( Protocolo DNS )=--=( IaM )=-


El DNS (Domain Name System)
---------------------------

Hola a todos, soy ^_IaM_^, este es mi primer artculo, espero que no me tiris
tomates ni nada de eso :P. Escribo esto por que estoy haciendo un trabajo que 
explica unos cuantos protocolos de Internet y como tena dudas al redactar,
pues he ido consultando por ahi a la gente y al final me ha salido esto, (asi
si a alguien le sirve de algo pos... que haga un ligero copy & paste tb de la 
bibliografa!! xD).Gracias a los que me habis echado una manita cuando estaba 
en apuros, si hay algn fallo etc, e-mail a 1am@gmx.net ;) bueno no os flodeo 
ms empiezo con esto sujetaos bien xD.

Un servidor DNS es un ordenador que se encarga de convertir IPs a nombres y 
viceversa. La resolucin puede ser directa e inversa, decimos que se trata de 
una resolucin directa cuando el usuario le proporciona el nombre del recurso
de la red y el servidor le responde con la direccin de la red del recurso, por
ejemplo:

[root@rex iam]# nslookup
Note:  nslookup is deprecated and may be removed from future releases.
Consider using the `dig' or `host' programs instead.  Run nslookup with
the `-sil[ent]' option to prevent this message from appearing.
> microsoft.com. (El punto es para que busque en Internet no en la LAN)
Server:         194.224.52.36
Address:        194.224.52.36#53
 
  Non-authoritative answer:
  Name:   microsoft.com
  Address: 207.46.230.218
  Name:   microsoft.com
  Address: 207.46.230.219
  Name:   microsoft.com
  Address: 207.46.197.100
  Name:   microsoft.com
  Address: 207.46.197.101
  Name:   microsoft.com
  Address: 207.46.197.102

y decimos que se trata de una resolucin inversa cuando el usuario le 
proporciona al servidor DNS una direccin de red y este le contesta con el 
nombre del recurso, por ejemplo:

[root@rex iam]# nslookup
Note:  nslookup is deprecated and may be removed from future releases.
Consider using the `dig' or `host' programs instead.  Run nslookup with
the `-sil[ent]' option to prevent this message from appearing.
 
 > 207.46.230.218.
 Server:         194.224.52.36
 Address:        194.224.52.36#53
  
 218.230.46.207.in-addr.arpa     name = microsoft.com.
 218.230.46.207.in-addr.arpa     name = microsoft.net.
 218.230.46.207.in-addr.arpa     name = www.domestic.microsoft.com.

El servidor DNS est organizado en forma cliente/servidor. Los clientes son los
resolvers y los servidores son los servidores de nombres, aclaro esto porque
yo no sabia que diferencia haba entre un resolver y un servidor DNS y es bien
simple. Cuando en nuestro navegador ponemos www.hispalinux.es, por ejemplo, tu
eres el resolver y los servidores DNS son los que te contestan convirtiendo 
este nombre a IP. Los servidores DNS estan organizados en forma de arbol, no
se si es un buen ejemplo pero ms o menos como los directorios de Linux, pero
empiezan de atrs para delante llamndose unos a otros hasta que llegan a la
ruta especificada.

Hay dos tipos de Servidores de Nombres, los primarios y los secundarios. En 
principio cuando haces una consulta se la haces al primario, pero si este se 
cae se encarga el secundario.

Cuando se realiza una consulta a un servidor de nombres se puede hacer de dos
maneras:

 * Consulta recursiva: En la que el Resolver le pregunta al servidor de Nombres,
                       si conoce la respuesta, entonces se la devuelve al 
		       cliente, si no la sabe contactar con otro servidor, 
		       as hasta que reciba una respuesta vlida o un error.

 * Consulta iterativa: En la que adems de recibir la respuesta o un error 
                       puede recibir la direccin de otro servidor de nombres 
		       para que realice la consulta en su lugar.

Normalmente las consultas iterativas siempre estan disponibles (por defecto), 
las consultas recursivas son opcionales.

Ahora explicar como van los mensajes DNS, nos podramos imaginar un mensaje 
DNS de la siguiente forma:

                 ---------------------------------
		 |Cabecera del mensaje           |
		 ---------------------------------
		 |Solicitud de la informacin    |
		 ---------------------------------
		 |Respuesta a la solicitud       |
		 ---------------------------------
		 |Servidor con autoridad         |
		 ---------------------------------
		 |Informacin adicional          |
		 ---------------------------------


En la cabecera del mensaje se indica que otras secciones estn en el mensaje 
por tanto siempre est presente, la cabecera tiene las siguientes partes:

 ----------------------------------------------------------------------------
 |                               Identificador                              |
 ----------------------------------------------------------------------------
 |SR | Codigo solicitud | RA | TR | RS |  RD |  Reservado | Codigo Respuesta|
 ----------------------------------------------------------------------------
 |               Nmero de RRs en el campo "Solicitud de la informacin"    |
 ----------------------------------------------------------------------------
 |               Nmero de RRs en el campo "Respuesta a la solicitud"       |
 ----------------------------------------------------------------------------
 |               Nmero de RRs en el campo "Servidor con autoridad"         |
 ----------------------------------------------------------------------------
 |               Nmero de RRs en el campo "Informacin adicional"          |
 ----------------------------------------------------------------------------




1.- Identificador
  Es un nmero de 16 bits generado por el cliente cuando hace la solicitud, 
  entonces cuando el servidor de nombres tiene que responder vuelve a copiar 
  este nmero en la cabecera para que el cliente sepa a que paquete esta 
  respondiendo.

2.- SR
  Es un bit que indica si es una solicitud de informacin, entonces es cero, 
  por el contrario si es una respuesta es 1.

3.- Cdigo de solicitud
  Es un campo de 4 bits que identifica el tipo de solicitud, lo establece el 
  cliente y se copia en el mensaje de respuesta. Puede tener estos valores:

     0.- para una resolucin directa
     1.- para una resolucin inversa
     2.- Una solicitud del estado del servidor
     3.- 15.- Estan reservados para ms adelante, no se utilizan todaba.

3.- RA
  Es un bit para indicar si la respuesta es autorizada 1 o no lo es 0

4.- TR
  Este bit indica si el mensaje fue truncado

5.- RS
  Es un bit que si esta a cero quiere decir que el servidor tiene que realizar 
  una bsqueda iterativa en caso contrario recursiva.

6.- RD
  Este bit indica si el DNS permite bsquedas recursivas 1 o 0 en caso 
  contrario, es una comprovacion para el RS.

7.- Reservado
  Es un campo que no se utiliza todaba, actualmente siempre esta en cero.

8.- Cdigo de respuesta
  Puede tomar estos valores:

	0.- Sin errores
	1.- Se ha producido un error de formato y el DNS no ha podido 
            interpretar la solicitud.
	2.- Ha habido un error en el servidor y por lo tanto no se ha podido
	    realizar la solicitud
	3.- Error en el nombre, se recibe este valor cuando un servidor DNS 
	    autorizado a resolver nuestro nombre nos dice que no existe, que 
	    no est en su rama.
	4.- Solicitud errnea, el DNS no sabe como resolverla.
	5.- El DNS no ha aceptado la peticin.
	6.- 15.- No se utilizan todaba, estan reservados par un futuro.

9.- Los RRs.
  Los RRs son unos archivos de recurso que estan presentes en cada nodo DNS, 
  estos archivos se utilizan para encontrar el ordenador al cual se le est
  intentando resolver la direcci.

El formato del RR es el siguiente:

	--------------------
        |   Nombre	   |
	--------------------
        |   Tipo           |
        --------------------
        |   Clase          |
        --------------------
        |   Tiempo de vida |
        --------------------
        |   Longitud RD    |
        --------------------
        |   Datos          |
        --------------------

1.- Nombre
  Es el nombre del propietario al que pertenece el RR, el nombre del host. Este
  nombre sera comprobado junto con el nombre proporcionado por el programa 
  cliente.

2.- Tipp
  Es un nmero entero de 16 bits que indica el tipo de RR. No los pondr todos 
  porque se alargara mucho este artculo. El que quiera ms informacin le 
  puede echar una ojeada al archivo <arpa/nameser.h>.

 
 ------------------------------------------------------------------------------
 | Tipo  |    Valor      |    Descripcin                                     |
 ------------------------------------------------------------------------------
 | A     |       1       |    Direccin de un host                            |
 ------------------------------------------------------------------------------
 | NS    |       2       |    Servidor de nombres con autoridad               |
 ------------------------------------------------------------------------------
 | CNAME |       5       |    Nombre cannico de un lias                     |
 ------------------------------------------------------------------------------
 | SOA   |       6       |    Indica el principio de una zona de autoridad    |
 ------------------------------------------------------------------------------
 | WKS   |       11      |    Descripcin de un servicio estndard            |
 ------------------------------------------------------------------------------
 | PTR   |       12      |    Apunta a un nombre de dominio                   |
 ------------------------------------------------------------------------------
 | HINFO |       13      |    Informacin sobre un host                       |
 ------------------------------------------------------------------------------
 | MINFO |       14      |    Informacim sobre un buzn o lista de correo    |
 ------------------------------------------------------------------------------
 | MX    |       15      |    Intercambio de correo                           |
 ------------------------------------------------------------------------------
 | TXT   |       16      |    Cadena de texto informativa                     |
 ------------------------------------------------------------------------------
 | AXFR  |       252     |    Apunta a la zona entera                         |
 ------------------------------------------------------------------------------
 | MAILB |       253     |    Solicita archivos al servidor de correo         |
 ------------------------------------------------------------------------------
 | MAILA |       254     |    Registros relacionados con el agente de correo  |
 ------------------------------------------------------------------------------
 | *     |       255     |    Todos los registros                             |
 ------------------------------------------------------------------------------

3.- Clase del recurso

     ---------------------------------------------------------------------
     | Tipus | Valor |               Descripci                          |
     ---------------------------------------------------------------------
     | IN    |   1   |   Internet                                        |
     ---------------------------------------------------------------------
     | CS    |   2   |   CSNET (no se utiliza)                           |
     ---------------------------------------------------------------------
     | CH    |   3   |   CHAOS                                           |
     ---------------------------------------------------------------------
     | HS    |   4   |   Hesiod                                          |
     ---------------------------------------------------------------------
     | *     |  255  |   Todas                                           |
     ---------------------------------------------------------------------


4.- Tiempo de vida (TTL), es un nmero entero que indica el tiempo mximo que
    el RR puede estar en la memria cach.

5.- Longitud, es un nmero entero que indica la longitud en octetos del campo
    de datos.

6.- Campo de datos, en este campo habr una informaci o otra segn el tipo de
    RR. Segun lo que he explicado antes:

   6.1.- Tipo A, llevara una direccin IP de 32 bits, si el host tiene varias
	 direcciones llevar varias direcciones IP

   6.2.- NS. NSDNAME especifica un host que acta comm servidor de nombres para
	 la clase y el dominio especificados. Todas las respuestas del servidor 
	 de nombres sern autorizadas. Al realizar una solicitud NS es normal 
	 que se incorporen registros adicionales del tipo "A" en la ltima 
	 seccin del mensaje destinada a la informacin adicional para obtener 
	 las diferentes direcciones IP del servidor de nombres consultado.

   6.3.- CNAME. CNAME indica un nombre de dominio al que esta asociado el alias
	 indicado en el campo nombre.

   6.4.- SOA. Inicio de una zona de autoridad.
		
      6.4.1.- Servidor de nombres: El nombre del hos que actua como servidor
	      de nombres primario para esa zona.

      6.4.2.- E-Mail: La direccin de correo electrnico del responsable del
	      mantenimiento de los datos de esa zona.

      6.4.3.- Nmero de srie: Un nmero entero si signo de 32 bits que acta 
              como nmero de versin para los datos de la zona. Cuando un 
	      servidor de nombres secundario contacta con un servidor primario 
	      para actualizar sus datos, lo primero que hace es preguntar por 
	      el nmero de srie que tiene los datos del primario, de esta 
	      forma el secundario sabe si tiene una versin anterior i si 
	      necesita o no actualizarse.

      6.4.4.- Intervalo de actualizacin: Este intervalo indica cada cuanto 
              tiempo un servidor secundario contacta con el primario para 
	      actualizar sus datos.

      6.4.6.- Finalizacin del servicio: Cuando el servidor primario deja de 
              hacer su funcin, el secundario entra en funcionamiento 
	      respondiendo a las peticiones que se realicen. El servidor 
	      secundario comprobar peridicamente si el servidor primario no 
	      vuelve a estar operativo pasado el tiempo indicado en este campo,
	      el servidor secundario dejara de funcionar, que se considera 
	      que sus datos son muy antiguos.

      6.4.7.- TTL (Time To Live): Este valor indica el tiempo que una respuesta
	      puede mantenerse en memria cach. Transcurrido ese periodo, una 
	      respuesta almacenada en la memria cach deja de ser vlida i 
	      entonces tendr que consultar al servidor de nombres autorizado.


                            -----------------------------------			                            |    Servicio de nombres          |
                            -----------------------------------
                            |    E-Mail                       |
                            -----------------------------------
                            |    Numero de srie              |
                            -----------------------------------
                            |    Intervalo de actualitzatcin |
                            -----------------------------------
                            |    Intervalo de reintento       |
                            -----------------------------------
                            |    Finalizacin del servicio    |
                            -----------------------------------
			    |    TTL                          |
			    -----------------------------------
		

   6.5.- WKS (Descripcin de un servicio estndard)
			
      6.5.1.- Direccin IP: Una direccin IP vlida

      6.5.2.- Protocolo: Un identificador de protocolo de 8 bits.

      6.5.3.- Bitmap: Un mapa de bits de longitud variable que tiene que ser
              mltiplo de 8. Cada bit hace referencia a un puerto del host 
	      para el protocolo indicado.
              Si un host tiene diferentes direcciones IP, tiene diferentes 
	      WKS, uno para cada direccin. Este registro nos permite saber 
	      que servicio estn disponibles en un servidor, por ejemplo si 
	      para una determinada direccin tenemos lo que en el campo 
	      protocolo vale 6 (TCP) y el bit 24 (puerto 25) el bitmap est a 
	      1, entonces sabramos que ese servidor dispone del servicio 
	      SMTP.

			--------------------------
			| Direccin IP		 |
			--------------------------
			| Protocolo |   BitMap   |
			--------------------------

   6.6.- PTR (domain name PoinTeR)
         Es una cadena de texto que apunta a un servidor DNS del mismo rbol.

			-------------------------
			|       PTRDNAME	|
			-------------------------

   6.7.- HINFO (Informacin sobre un host determinado)
         Son dos cadenas de texto, CPU y OS que indiquen pues eso el sistema
	 que esta corriendo y la CPU.

			------------------------
			|	  CPU	       |
			------------------------
			|	  OS	       |
			------------------------

   6.8.- MIMFO (Informacin sobre un buzn o lista de correo)
	 Son dos cadenas RMAILBX i EMAILBX:
         RMAILBX es un nombre de dominio que especifca un buzn de correo.
	 EMAILBX es un nombre de dominio que especifica un buzn de correo 
	 donde recibirn los mensajes de error que pertenezcan al buzn de 
	 correo indicado anteriormente, si este campo se deja en blanco el 
	 mensaje de error se envia al host que ha enviado el e-mail.

			-------------------------
			|	RMAILBX		|
			-------------------------
			|	EMAILBX		|
			-------------------------
		
   6.9.- MX (Servidor de correo asociado a un dominio)
         Se divide en dos campos :
         PREFERENCE: es un nmero entero de 16 bits que indica la prioridad de 
	             este servidor entre otros del mismo tipo que puedan ser 
		     indicados. Cuanto ms bajo sea el valor ms prioridad t
		     iene.
         EXCHANGE: es un nombre de dominio que hace referencia a un host que 
	           har de servidor de correo para el dominio indicado en el 
		   campo Nombre del "RR".
	                
			-------------------------
			|       RMAILBX         |
                        -------------------------
                        |       EMAILBX         |
                        -------------------------

   6.10.- TXT (Cadenas de carcteres)
          Pues eso mismo, es una o ms cadenas de carcteres
			
			----------------------
			|	TEXTO	     |
			----------------------
			|	TEXTO	     |
			----------------------
			
	

   Bueno creo que eso es todo, aqui ya he acabado de explicar el campo de 
   datos, solo he explicado 10 tipos, pero hay muchos ms, para verlos
   todos cat /usr/include/arpa/nameser.h, os apareceran 49 no se si hay
   ms.


Eso es todo, supongo que esto a algunos les habr aburrido, ( a algunos :?)
Desde aqui un saludo a toda la gente que colabora haciendo esta e-zine que es
una maravilla y a la gente que la lee como no. Sobretodo al canal #root del
irc-hispano, a Ripe, b0nk, tuxisuau, Anarion, ICEFIRE, ^CyPhEr, Doing.. la 
gente que me dejo que se de por saludada. A ver si hay una prxima.

    ^_IaM_^



Bibliografa:
-------------
	
	Routers Cisco de Prentice Hall

	TCP/IP Prentice Hall

	Protocolos de Internet diseo e implementacin en sistemas UNIX

	Canal #root ;)
	
	Protocolos de Internet (TCP/IP) [www.digitalsec.net]

*EOF*
